﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Collections;

namespace Datos
{
    public class MetodosDatosDao
    {
        public static SqlCommand CrearComando()
        {
            string _cadenaConexion = Configuracion.CadenaConexion;
            SqlConnection _conexion = new SqlConnection();
            _conexion.ConnectionString = _cadenaConexion;
            SqlCommand _comando = new SqlCommand();
            _comando = _conexion.CreateCommand();
            _comando.CommandType = CommandType.Text;
            return _comando;
        }

        public static int EjecutarComando(SqlCommand comando)
        {
            try
            {
                comando.Connection.Open();
                return comando.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally
            {
                comando.Connection.Dispose();
                comando.Connection.Close();
            }
        }

        public static DataTable EjecutarComandoSelect(SqlCommand comando)
        {
            DataTable _tabla = new DataTable();
            try
            {
                comando.Connection.Open();
                SqlDataAdapter adaptador = new SqlDataAdapter();
                adaptador.SelectCommand = comando;
                adaptador.Fill(_tabla);
            }
            catch (Exception ex)
            { throw ex; }
            finally
            { comando.Connection.Close(); }
            return _tabla;
        }

        public static int Insertar(string NombreTabla, string[] NombresCampos, ArrayList Dato)
        {
            string Comando = ComandosDao.CrearComandoInsertar(NombreTabla, NombresCampos);
            AccesoDatosDao Acceso = new AccesoDatosDao();
            return Acceso.ComandoSQL(Comando, NombresCampos, Dato);
        }

        public static int Modificar(string NombreTabla, string[] NombresCampos, ArrayList Dato)
        {
            string Comando = ComandosDao.CrearComandoModificar(NombreTabla, NombresCampos);
            AccesoDatosDao Acceso = new AccesoDatosDao();
            return Acceso.ComandoSQL(Comando, NombresCampos, Dato);
        }

        public static int Borrar(string NombreTabla, string[] NombresCampos, ArrayList Dato)
        {
            string Comando = ComandosDao.CrearComandoBorrar(NombreTabla, NombresCampos);
            AccesoDatosDao Acceso = new AccesoDatosDao();
            return Acceso.ComandoSQL(Comando, NombresCampos, Dato);
        }

        public static DataTable Seleccionar(string NombreTabla, string[] NombresCampos)
        {
            string Comando = ComandosDao.CrearComandoSeleccionar(NombreTabla, NombresCampos);
            AccesoDatosDao Acceso = new AccesoDatosDao();
            return Acceso.SeleccionarTabla(Comando);
        }

    }
}
